// 在页面或组件中导入
import validate from 'wechat-validate'

Page({
  // 通过 behaviors 注入 validate 方法
  behaviors: [validate],
  // 定义表单数据的验证规则
  rules: {
    name: [
      { required: true, message: '访客姓名不能为空' },
      { pattern: /^(?:[\u4e00-\u9fa5·]{2,16})$/, message: '访客姓名只能为中文' },
    ],
    mobile: [
      { required: true, message: '访客手机号不能为空' },
      { pattern: /^1\d{10}$/, message: '请填写正确的手机号码' },
    ],
    houseId: [{ required: true, message: '请选择到访的房屋' }],
    visitDate: [{ required: true, message: '请选择到访的日期' }],
  },
  data: {
    dateLayerVisible: false,
    houseLayerVisible: false,
    houseList: [],
    // 新增访客邀请后端所需参数
    houseId: '', // 选中房屋id
    name: '', // 姓名
    gender: 1, // 性别
    mobile: '', // 手机号
    visitDate: '', // 访问日期
    // 用于前端展示的
    houseInfo: '', // 选中房屋名称
    currentDate: new Date().getTime(),
  },
  openHouseLayer() {
    this.setData({ houseLayerVisible: true })
  },
  closeHouseLayer() {
    this.setData({ houseLayerVisible: false })
  },
  openDateLayer() {
    this.setData({ dateLayerVisible: true })
  },
  closeDateLayer() {
    this.setData({ dateLayerVisible: false })
  },
  goPassport() {
    wx.reLaunch({
      url: '/pkg_visitor/pages/passport/index',
    })
  },
  // ----------- 自己写的业务 -----------
  onLoad() {
    // 获取审核通过的房屋列表
    this.getHouseList()
  },
  // 获取房屋列表
  async getHouseList() {
    // 调用接口
    const res = await wx.http.get('/house')
    // 渲染数据
    this.setData({
      houseList: res.data,
    })
  },
  // 选择房屋
  selectHouseInfo(ev) {
    // 记录获取的数据
    this.setData({
      houseId: ev.detail.id,
      houseInfo: ev.detail.name,
    })
  },
  // 选择到访日期
  selectDateInfo(ev) {
    // 获取用户选中的日期，wx.utils.formatDate 用于格式化时间
    this.setData({
      visitDate: wx.utils.formatDate(ev.detail),
      dateLayerVisible: false,
    })
  },
  // 表单提交
  async onSubmit() {
    // 验证表单数据
    if (!this.validate()) return
    // 表单校验成功，提交访客单
    const { houseId, name, gender, mobile, visitDate } = this.data
    // console.log('🟢 后端所需 5 个参数', { houseId, name, gender, mobile, visitDate })
    const res = await wx.http.post('/visitor', {
      name,
      gender,
      mobile,
      houseId,
      visitDate,
    })
    // 跳转到访客详情页面
    wx.navigateTo({
      url: '/pkg_visitor/pages/passport/index?id=' + res.data.id,
    })
  },
})
